package model;

import java.util.LinkedHashMap;

import android.content.Context;
import br.com.site.R;

import com.google.android.maps.GeoPoint;

public class Equipe extends PDI {

	private int icone = R.drawable.team_icon;
	private int tipo = 4;
	private Equipamento equipamento;
	private Estrutura estrutura;
	private Perigo perigo;
	private String identificacao, chefe, tipoDeFuncao, tarefaAtual;
	private Instituicao inst;
	private Unidade unid;
	private int qtdMembros;
	private int qtdMembrosFeridos;
	
	public Equipe(String Latitude, String Longitude, String Titulo, String Texto,
			Estrutura estrutura, Equipamento equipamento, Perigo perigo,
			String identificacaoDaEquipe, String chefeDaEquipe, Instituicao instituicao, Unidade unidade,
			int tipoDeFuncao, int quantidadeDeMembros, int quantidadeMembrosFeridos, String tarefaAtual) {
		super(Latitude, Longitude, Titulo, Texto);
		this.setAtributos(estrutura, equipamento, perigo, identificacaoDaEquipe, chefeDaEquipe, instituicao, unidade, tipoDeFuncao, quantidadeDeMembros, quantidadeMembrosFeridos, tarefaAtual);
	}
	
	public Equipe(GeoPoint p, String Titulo, String Texto,
			Estrutura estrutura, Equipamento equipamento, Perigo perigo,
			String identificacaoDaEquipe, String chefeDaEquipe, Instituicao instituicao, Unidade unidade,
			int tipoDeFuncao, int quantidadeDeMembros, int quantidadeMembrosFeridos, String tarefaAtual) {
		super(p, Titulo, Texto);
		this.setAtributos(estrutura, equipamento, perigo, identificacaoDaEquipe, chefeDaEquipe, instituicao, unidade, tipoDeFuncao, quantidadeDeMembros, quantidadeMembrosFeridos, tarefaAtual);
		
		
	}
	
	private void setAtributos(Estrutura estrutura, Equipamento equipamento, Perigo perigo,
			String identificacaoDaEquipe, String chefeDaEquipe, Instituicao instituicao, Unidade unidade,
			int tipoDeFuncao, int quantidadeDeMembros, int quantidadeMembrosFeridos, String tarefaAtual){
		this.perigo = perigo;
		this.estrutura = estrutura;
		this.equipamento = equipamento;
		this.identificacao = identificacaoDaEquipe;
		this.tarefaAtual = tarefaAtual;
		this.chefe = chefeDaEquipe;
		this.inst = instituicao;
		this.unid = unidade;
		this.qtdMembros = quantidadeDeMembros;
		this.qtdMembrosFeridos = quantidadeMembrosFeridos;
		
		switch(tipoDeFuncao){
		case 0: this.tipoDeFuncao = "Desconhecido"; break;
		case 1: this.tipoDeFuncao = "Resgate"; break;
		case 2: this.tipoDeFuncao = "Administração"; break;
		case 3: this.tipoDeFuncao = "Médica"; break;
		case 4: this.tipoDeFuncao = "Segurança"; break;
		case 5: this.tipoDeFuncao = "Voluntários"; break;
		case 6: this.tipoDeFuncao = "Serviços Públicos"; break;
		default: this.tipoDeFuncao = ""; break;
		}
		
		this.atualizaTextoBalao();
	}
	
	public void atualizaTextoBalao() {
		String textoBalao = "";
		if(this.getQtdMembros() >0) textoBalao += this.getQtdMembros() + " membros";
		if(this.getQtdMembrosFeridos()>0) textoBalao += ", " + this.getQtdMembrosFeridos() + " feridos";
		if(this.getTipoDeFuncao().length()>0) textoBalao += ", " + this.getTipoDeFuncao();
		if(this.getInst()!= null) textoBalao += "\nInstituição: " + this.getInst().getTipoDeInstituicao();
		if(this.getEstrutura() != null) textoBalao += "\nEstrutura: " + this.getEstrutura().toString();
		if(this.getEquipamento() != null) textoBalao += "\nEquipamento: " + this.getEquipamento().toString();
		if(this.getPerigo() != null) textoBalao += "\nPerigo: " + this.getPerigo().toString();
		
		this.setTextoBalao(textoBalao);
	}

	public String getIdentificacao() {
		return identificacao;
	}

	public void setIdentificacao(String identificacao) {
		this.identificacao = identificacao;
		super.setTituloBalao(identificacao);
	}
	
	public String getTarefaAtual() {
		return tarefaAtual;
	}

	public void setTarefaAtual(String tarefaAtual) {
		this.tarefaAtual = tarefaAtual;
	}

	public String getChefe() {
		return chefe;
	}

	public void setChefe(String chefe) {
		this.chefe = chefe;
	}

	public String getTipoDeFuncao() {
		return tipoDeFuncao;
	}

	public void setTipoDeFuncao(int tipoDeFuncao) {
		switch(tipoDeFuncao){
		case 0: this.tipoDeFuncao = "Desconhecido"; break;
		case 1: this.tipoDeFuncao = "Resgate"; break;
		case 2: this.tipoDeFuncao = "Administração"; break;
		case 3: this.tipoDeFuncao = "Médica"; break;
		case 4: this.tipoDeFuncao = "Segurança"; break;
		case 5: this.tipoDeFuncao = "Voluntários"; break;
		case 6: this.tipoDeFuncao = "Serviços Públicos"; break;
		default: this.tipoDeFuncao = ""; break;
		}
	}

	public Instituicao getInst() {
		return inst;
	}

	public void setInst(Instituicao inst) {
		this.inst = inst;
	}

	public Unidade getUnid() {
		return unid;
	}

	public void setUnid(Unidade unid) {
		this.unid = unid;
	}

	public int getQtdMembros() {
		return qtdMembros;
	}

	public void setQtdMembros(int qtdMembros) {
		this.qtdMembros = qtdMembros;
	}
	

	public int getQtdMembrosFeridos() {
		return qtdMembrosFeridos;
	}

	public void setQtdMembrosFeridos(int qtdMembrosFeridos) {
		this.qtdMembrosFeridos = qtdMembrosFeridos;
	}

	public Equipamento getEquipamento() {
		return equipamento;
	}

	public Estrutura getEstrutura() {
		return estrutura;
	}

	public Perigo getPerigo() {
		return perigo;
	}

	public int getIcone() {
		return icone;
	}

	@Override
	public String toString() {
		String str = identificacao + ", " + tipoDeFuncao;
		if(!getTarefaAtual().equals("") || !getTarefaAtual().equals(null)) str += ", Tarefa atual: "+ getTarefaAtual();
		return str;
	}

	public void setEquipamento(Equipamento equipamento) {
		this.equipamento = equipamento;
	}

	public void setEstrutura(Estrutura estrutura) {
		this.estrutura = estrutura;
	}

	public void setPerigo(Perigo perigo) {
		this.perigo = perigo;
	}
	
	@Override
	public int getTipo(){
		return tipo;
	}

	public String getXML(){		
		LinkedHashMap<String, String> mapa = new LinkedHashMap<String, String>();
		mapa.put("identificacao", this.getIdentificacao());
		mapa.put("chefe", this.getChefe());
		mapa.put("tipoDeFuncao", this.getTipoDeFuncao());
		mapa.put("qtdMembros", String.valueOf(this.getQtdMembros()));
		mapa.put("qtdMembrosFeridos", String.valueOf(this.getQtdMembrosFeridos()));
		mapa.put("tarefaAtual", this.getTarefaAtual());
		
		return super.getXML("equipe", mapa);
	}
	
	
}
